package cn.edu.zafu.bigdata.cccnnn.workfour;

import java.io.*;

public class RhymingWords {
    public static void main(String[] args) throws IOException {
        FileReader words = new FileReader("C:\\Users\\zjqzs\\IdeaProjects\\LearnJava\\src\\main\\java\\cn\\edu\\zafu\\bigdata\\cccnnn\\workfour\\words.txt");
        // 进行单词的逆序、排序、再逆序还原
        Reader rhymedWords = reverse(sort(reverse(words)));
        // 将处理后的单词列表输出显示
        BufferedReader in = new BufferedReader(rhymedWords);
        String input;
        while ((input = in.readLine()) != null) {
            System.out.println(input);
        }
        in.close();
    }

    // 创建管道，创建并启动单词逆序线程
    public static Reader reverse(Reader source) throws IOException {
        BufferedReader in = new BufferedReader(source);
        PipedWriter pipeOut = new PipedWriter();
        PipedReader pipeIn = new PipedReader(pipeOut);
        PrintWriter out = new PrintWriter(pipeOut);
        new ReverseThread(out, in).start();
        return pipeIn;
    }

    // 创建管道，创建并启动单词排序线程
    public static Reader sort(Reader source) throws IOException {
        BufferedReader in = new BufferedReader(source);
        PipedWriter pipeOut = new PipedWriter();
        PipedReader pipeIn = new PipedReader(pipeOut);
        PrintWriter out = new PrintWriter(pipeOut);
        new SortThread(out, in).start();
        return pipeIn;
    }
}